import axios from 'axios'

// 配置状态码的相应解释
const errorMsg = {
  401:'未授权',
  403:'禁止访问',
  404:'页面找不到',
  407:'token已过期',
  500:'服务器内部错误',
}

// 配置公共路径和超时
const request = axios.create({
  baseURL:'/api',
  timeout:20000,
})

// 配置请求拦截器
request.interceptors.request.use(
  (config)=>{
    // 后续在里边配置公共参数
    return config
  }
)

// 配置响应拦截器
request.interceptors.response.use(
  // 成功的回调函数
  (response)=>{
    if(response.data.code===200){
      // 返回数据
      return response.data.data
    }else{
      // 提示用户
      alert(response.data.message || '未知错误，请联系管理员')
      // 返回失败的promise
      return Promise.reject()
    }
  },
  // 失败的回调函数
  (error)=>{
    // 有响应报文
    if(error.response){
      alert(errorMsg[error.response.status])
    }
    // 无响应报文
    else{
      if(error.message.indexOf('timeout')!==-1){
        alert('请求超时了，请稍后重试')
      }else if(error.message.indexOf('Network')!==-1){
        alert('网络已经断开连接，请连接网络后重试')
      }else{
        alert('未知错误，请联系管理员解决')
      }
    }
  }
)


export default request